一道与普通rsa不太相同的题,基本没见过这个思路,但实际上并不难,需要一点数学的直觉。

直接看代码可以知道,所使用的消息m、大整数N和加密指数e都是固定的,但需要用户自行输入一个padding,加密过程是:

cipher=(m+sha256(padding))e mod N

其中e的值固定为3,但因为消息m过长,三次方后超过N,导致直接开立方不奏效。由于密钥参数都是确定的,因此可以用两次加密作差来解决求模的问题,记sha256(padding)p,密文为c,那么两次加密的结果记做:

c1=(m+p1)3 mod N
c2=(m+p2)3 mod N

直接相减可以消去m的立方项,由于pm